This invention relates to software program modules. More particularly, this invention relates to a method and system for reporting failures of a program module to a corporate file server before transmitting the failures to a repository for storage and analysis.
Despite the best efforts of software developers, software programs inevitably fail at one time or another. One type of failure is a crash. A crash occurs while a program module is running and results in the suspension of operation of the program module. Crashes are frustrating to users and, in some cases, may cause the user to lose work. Another type of software program failure is a setup failure. Set-up failures occur during installation of a program module onto a user""s computer. Set-up failures may prevent certain aspects of the program module, or even the entire program module, from being installed on a user""s computer.
Crashes and set-up failures create a significant amount of work for product support personnel. Product support personnel, typically contacted via telephone, are often limited in their ability to diagnose problems due to the limited amount of information they can receive from the user. For example, the product support personnel may only know what the user was doing when the crash occurred or at what point of the installation the set-up failure occurred. There may be a significant amount of information on the user""s computer that may be useful to the product support personnel or to the software developers to diagnose the failures. However, because product support personnel and the software developers are not physically present at the user""s computer, this information can not be extracted and analyzed.
Thus, there is a need for a method and system for extracting from a computer relevant information regarding a failure of a program module, including the location of the failure, and transmitting this information to a software manufacturer so that the failure may be diagnosed and corrected. There is also a need for a method and system for requesting information from a failed program module, in addition to the location of the failure, and transmitting this additional information to a central repository for storage and analysis.
In developing such a method and system for reporting failures in a program module, there is a need for a method and system for reporting failures that fits well within a corporate environment. A corporation often limits, or even forbids, its users from using the Internet. Thus, there is a need for a method and system for reporting failures that does not require Internet access and may be used on a corporate Intranet.
Corporations often have security or privacy issues that also need to be handled. For example, a corporation may not want its users sending documents to a third party software vendor for analysis of a failure. Thus, there is a need for a method and system for reporting failures that addresses the security and privacy issues of a corporation.
The present invention satisfies the above described needs by providing a method and system for reporting failures in a corporate environment.
In one aspect, the invention comprises a computer-implemented implemented method and system for reporting failures in an application program module to a corporate file server. The failure may be a crash or a set-up failure. Once detected, the program failures are categorized, i.e. bucketed, and reported directly to a local file server operated by a corporation. The corporate file server may be used to store the failures encountered by users in a corporate environment until these failures are reported to a server operated by the manufacturer of the program module (a destination server). Once the failures are reported to the destination server, developers or programmers may examine the data and determine what is causing the failures in the program module.
In one aspect, a failure reporting executable on the user""s computer provides communications between the failed application program module and the local file server. An administrative reporting executable (typically operated at the corporate file server), provides communications between the failure reporting executable and the corporate file server and between the corporate file server and the destination server.
In one aspect, the present invention uses a cab tree, a counts tree and a status tree to store bucket information for a failure. The bucket information for a crash may comprise an AppName, an AppVer, a ModuleName, a ModuleVer, and an offset into that module. The bucket information in the corporate file server may be uploaded to a destination server by a corporate system administrator thus preventing sensitive information from being disclosed by the corporation""s users, and allowing the eventual reporting of failures experienced by users that do not have direct access to the Internet.
These and other features, advantages, and aspects of the present invention may be more clearly understood and appreciated from a review of the following detailed description of the disclosed embodiments and by reference to the appended drawings and claims.